x11: Plug listmodel memory leaks
authorMatthias Clasen <mclasen@redhat.com>
Tue, 10 Nov 2020 14:07:01 +0000 (09:07 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 10 Nov 2020 14:07:01 +0000 (09:07 -0500)
We were leaking references returned from g_list_model_get_item
in some places.

gdk/x11/gdkscreen-x11.c

index 672165412ea60ea7529ed53ce038d1e7493d23f6..9cb8be674657c06e653891eed9e34573c57b302b 100644 (file)
@@ -613,10 +613,8 @@ init_randr15 (GdkX11Screen *x11_screen)
       notify_surface_monitor_change (x11_display, GDK_MONITOR (monitor));
       if (monitor->remove)
         {
-          g_object_ref (monitor);
           g_list_store_remove (x11_display->monitors, i);
           gdk_monitor_invalidate (GDK_MONITOR (monitor));
-          g_object_unref (monitor);
         }
       g_object_unref (monitor);
     }
@@ -764,11 +762,10 @@ init_randr13 (GdkX11Screen *x11_screen)
       notify_surface_monitor_change (x11_display, GDK_MONITOR (monitor));
       if (monitor->remove)
         {
-          g_object_ref (monitor);
           g_list_store_remove (x11_display->monitors, i);
           gdk_monitor_invalidate (GDK_MONITOR (monitor));
-          g_object_unref (monitor);
         }
+      g_object_unref (monitor);
     }
 
   x11_display->primary_monitor = 0;
@@ -852,10 +849,8 @@ init_no_multihead (GdkX11Screen *x11_screen)
       notify_surface_monitor_change (x11_display, GDK_MONITOR (monitor));
       if (monitor->remove)
         {
-          g_object_ref (monitor);
           g_list_store_remove (x11_display->monitors, i);
           gdk_monitor_invalidate (GDK_MONITOR (monitor));
-          g_object_unref (monitor);
         }
       g_object_unref (monitor);
     }